ASP.NET Core-এ real-time communication সম্ভব করার জন্য SignalR ব্যবহার করা হয়। SignalR হলো একটি লাইব্রেরি যা real-time web functionality প্রদান করে, যেমন: instant messaging, live updates, notifications, এবং real-time dashboards। SignalR ডেভেলপারদের ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করার জন্য একটি সহজ এবং কার্যকরী পদ্ধতি প্রদান করে।
SignalR এর মাধ্যমে ক্লায়েন্ট সাইডের অ্যাপ্লিকেশন একটি ইভেন্টের মাধ্যমে সার্ভারের কাছ থেকে ডেটা আপডেট পেতে পারে এবং ক্লায়েন্ট সাইডে তা তৎক্ষণাৎ প্রদর্শিত হবে। এটি অ্যাপ্লিকেশনকে real-time data updates এবং live notifications প্রদান করতে সক্ষম করে।
SignalR ব্যবহার করে real-time data updates এবং notifications ইমপ্লিমেন্ট করতে কিছু ধাপ অনুসরণ করতে হবে:
প্রথমে, SignalR সেটআপ করতে হবে। ASP.NET Core অ্যাপ্লিকেশন থেকে SignalR ব্যবহারের জন্য Microsoft.AspNetCore.SignalR NuGet প্যাকেজ ইনস্টল করতে হবে।
NuGet প্যাকেজ ইনস্টল করা:
dotnet add package Microsoft.AspNetCore.SignalR
SignalR এর মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে real-time ডেটা পাঠানোর জন্য Hub তৈরি করা হয়। Hub হলো একটি কনসেপ্ট যেখানে ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে যোগাযোগ করতে পারে। Hub ক্লাসে বিভিন্ন মেথড থাকে যেগুলো ক্লায়েন্ট থেকে সার্ভারে কল করা যেতে পারে।
using Microsoft.AspNetCore.SignalR;
public class NotificationHub : Hub
{
// ক্লায়েন্টে মেসেজ পাঠানোর মেথড
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
এখানে, SendMessage মেথডটি ক্লায়েন্ট থেকে সার্ভারে একটি মেসেজ প্রেরণ করবে, এবং ReceiveMessage মেথডটি সব ক্লায়েন্টকে মেসেজ পাঠাবে।
SignalR হাব সার্ভারের সাথে সংযুক্ত করতে Startup.cs ফাইলে কনফিগারেশন করতে হবে।
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR(); // SignalR সার্ভিস যোগ করা
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// SignalR রাউট কনফিগার করা
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<NotificationHub>("/notificationHub");
});
}
}
এখানে, MapHub
মেথডটি SignalR হাবকে /notificationHub রুটে ম্যাপ করছে।
SignalR হাবের সাথে ক্লায়েন্ট সাইডে কানেক্ট করতে JavaScript ব্যবহার করতে হবে। ক্লায়েন্ট সাইডে SignalR client library ব্যবহার করা হয় যা SignalR হাবের সাথে কমিউনিকেট করতে সহায়তা করে।
SignalR JavaScript লাইব্রেরি যোগ করা:
আপনি CDN ব্যবহার করে JavaScript লাইব্রেরি যুক্ত করতে পারেন বা NuGet প্যাকেজ ব্যবহার করে সেটি ইনস্টল করতে পারেন। CDN থেকে লাইব্রেরি যোগ করা হয়েছে নিচে:
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@5.0.10/dist/browser/signalr.min.js"></script>
// SignalR হাবের সাথে কানেক্ট করা
const connection = new signalR.HubConnectionBuilder()
.withUrl("/notificationHub")
.build();
// ক্লায়েন্টে মেসেজ রিসিভ করার জন্য হাব মেথড সেট করা
connection.on("ReceiveMessage", function (user, message) {
const msg = `${user}: ${message}`;
const msgElement = document.createElement("div");
msgElement.textContent = msg;
document.getElementById("messagesList").appendChild(msgElement);
});
// কানেক্ট করার পর মেসেজ পাঠানো
document.getElementById("sendButton").addEventListener("click", function () {
const user = document.getElementById("userInput").value;
const message = document.getElementById("messageInput").value;
connection.invoke("SendMessage", user, message).catch(function (err) {
return console.error(err.toString());
});
});
// SignalR connection শুরু করা
connection.start().catch(function (err) {
return console.error(err.toString());
});
এখানে:
ReceiveMessage
মেথড ক্লায়েন্ট সাইডে মেসেজ রিসিভ করার জন্য ব্যবহৃত হয়।SendMessage
মেথডটি ক্লায়েন্ট থেকে সার্ভারে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।connection.start()
ব্যবহার করে SignalR হাবের সাথে কানেক্ট করা হয়।Real-time notifications প্রেরণ করার জন্য, যখন কোনো ইভেন্ট ঘটে, তখন SendMessage মেথড ব্যবহার করে NotificationHub এর মাধ্যমে ক্লায়েন্টকে মেসেজ পাঠানো হয়।
public class OrderController : Controller
{
private readonly IHubContext<NotificationHub> _hubContext;
public OrderController(IHubContext<NotificationHub> hubContext)
{
_hubContext = hubContext;
}
public async Task<IActionResult> CreateOrder(Order order)
{
// অর্ডার তৈরি করার কোড
// ...
// অর্ডার সফলভাবে তৈরি হলে নোটিফিকেশন পাঠানো
await _hubContext.Clients.All.SendAsync("ReceiveMessage", "System", "New Order Created!");
return RedirectToAction("Index");
}
}
এখানে, IHubContext<NotificationHub>
ব্যবহার করে NotificationHub এর মাধ্যমে সব ক্লায়েন্টকে একটি "New Order Created!" নোটিফিকেশন পাঠানো হচ্ছে।
SignalR এর মাধ্যমে ASP.NET Core অ্যাপ্লিকেশনে real-time data updates এবং notifications ইমপ্লিমেন্ট করা খুবই সহজ। SignalR-এ ক্লায়েন্ট এবং সার্ভারের মধ্যে দুই-way communication সম্ভব, যা real-time অ্যাপ্লিকেশন যেমন চ্যাট, লাইভ ড্যাশবোর্ড, নিউজ ফিড, এবং রিয়েল-টাইম নোটিফিকেশন সিস্টেমের জন্য অত্যন্ত কার্যকরী। NotificationHub তৈরি করে ক্লায়েন্টদের সাথে নোটিফিকেশন শেয়ার করা যায় এবং JavaScript ব্যবহার করে SignalR client-side ইন্টিগ্রেট করা যায়।
common.read_more